#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QComboBox>
#include <QTranslator>
#include <QMessageBox>

#include "sqliteutil.h"
#include "serialportutil.h"
#include "kmslocker.h"
#include "wllocker.h"
#include "common.h"

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    // 表名
    const static QString TABLE_NAME;

    Widget(QWidget *parent = nullptr);
    ~Widget();

    // 插入数据到sqlite
    int insertData(QString table_name, int board_pos, int lock_pos, QString status);
    // 从sqlite读取数据绘制到表格
    void drawTable(int id);

    // crc16求和
    QString crcSum16(QString data);
    //quint16 crcSum16(quint8* pchMsg, quint16 len);

signals:
    void delTable();

private slots:
    // 从sqlite读取数据绘制到表格
    void drawTable_slot();

    void delTable_slot();

    void changeEvent(QEvent *e);

    void on_combo_currentIndexChanged(int index);

    // 检测串口
    void on_check_btn_clicked();
    // 打开串口
    void on_open_btn_clicked();

    // 获取锁状态
    void on_lock_status_btn_clicked();

    // 开启锁
    void on_open_one_btn_clicked();

    // 获取所有锁状态
    void on_all_status_btn_clicked();

    // 开启所有锁
    void on_open_all_btn_clicked();

private:
    Ui::Widget *ui;
    QSqlQueryModel *model;
    QTranslator *tran;

    SqliteUtil sqlite_util;
    SerialPortUtil serial;
    KmsLocker kmsLocker;
};
#endif // WIDGET_H
